﻿using XUCore.Ddd.Domain;
using XUCore.NetCore.FreeSql.Entity;

namespace XUCore.NetCore.FreeSql.Curd
{
    /// <summary>
    /// CURD服务
    /// </summary>
    /// <typeparam name="TEntity">数据库实体</typeparam>
    /// <typeparam name="TDto">返回实体</typeparam>
    /// <typeparam name="TUser">IUser</typeparam>
    public interface ILongUserCurdService<TEntity, TDto, TUser> :
        IUserCurdService<long, long?, TEntity, TDto, TUser>
            where TEntity : EntityFull<long, long?>, new()
            where TDto : class, new()
            where TUser : IUser
    {
    }

    /// <summary>
    /// CURD服务
    /// </summary>
    /// <typeparam name="TEntity">数据库实体</typeparam>
    /// <typeparam name="TDto">返回实体</typeparam>
    /// <typeparam name="TCreateCommand">创建命令</typeparam>
    /// <typeparam name="TUpdateCommand">修改命令</typeparam>
    /// <typeparam name="TUser">IUser</typeparam>
    public interface ILongUserCurdService<TEntity, TDto, TCreateCommand, TUpdateCommand, TUser> :
        IUserCurdService<long, long?, TEntity, TDto, TCreateCommand, TUpdateCommand, TUser>
            where TEntity : EntityFull<long, long?>, new()
            where TDto : class, new()
            where TCreateCommand : CreateCommand
            where TUpdateCommand : UpdateCommand<long>
            where TUser : IUser
    {

    }
    /// <summary>
    /// CURD服务
    /// </summary>
    /// <typeparam name="TEntity">数据库实体</typeparam>
    /// <typeparam name="TDto">返回实体</typeparam>
    /// <typeparam name="TCreateCommand">创建命令</typeparam>
    /// <typeparam name="TUpdateCommand">修改命令</typeparam>
    /// <typeparam name="TQueryPageCommand">查询分页命令</typeparam>
    /// <typeparam name="TUser">IUser</typeparam>
    public interface ILongUserCurdService<TEntity, TDto, TCreateCommand, TUpdateCommand, TQueryPageCommand, TUser> :
        IUserCurdService<long, long?, TEntity, TDto, TCreateCommand, TUpdateCommand, TQueryPageCommand, TUser>
            where TEntity : EntityFull<long, long?>, new()
            where TDto : class, new()
            where TCreateCommand : CreateCommand
            where TUpdateCommand : UpdateCommand<long>
            where TQueryPageCommand : PageCommand
            where TUser : IUser
    {

    }
    /// <summary>
    /// CURD服务
    /// </summary>
    /// <typeparam name="TEntity">数据库实体</typeparam>
    /// <typeparam name="TDto">返回实体</typeparam>
    /// <typeparam name="TCreateCommand">创建命令</typeparam>
    /// <typeparam name="TUpdateCommand">修改命令</typeparam>
    /// <typeparam name="TQueryCommand">查询列表命令</typeparam>
    /// <typeparam name="TQueryPageCommand">查询分页命令</typeparam>
    /// <typeparam name="TUser">IUser</typeparam>
    public interface ILongUserCurdService<TEntity, TDto, TCreateCommand, TUpdateCommand, TQueryCommand, TQueryPageCommand, TUser> :
        IUserCurdService<long, long?, TEntity, TDto, TCreateCommand, TUpdateCommand, TQueryCommand, TQueryPageCommand, TUser>
            where TEntity : EntityFull<long, long?>, new()
            where TDto : class, new()
            where TCreateCommand : CreateCommand
            where TUpdateCommand : UpdateCommand<long>
            where TQueryCommand : ListCommand
            where TQueryPageCommand : PageCommand
            where TUser : IUser
    {

    }
}